<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database rows serialization</span> benchmarks run at 05/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize the first row from each table in the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a><strong>10000</strong> Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>3645</td><th>4.36x</th><td>242868</td><td>610329</td><td>853197</td><td>853.197</td><th>7.03x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1771</td><th>2.12x</th><td>384712</td><td>862785</td><td>1247497</td><td>1247.497</td><th>10.28x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>4419</td><th>5.29x</th><td>596643</td><td>566760</td><td>1163403</td><td>1163.403</td><th>9.59x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>1825</td><th>2.18x</th><td>262998</td><td>678809</td><td>941807</td><td>941.807</td><th>7.76x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>836</td><th>1x</th><td>59866</td><td>61486</td><td>121352</td><td>121.352</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>1397</td><th>1.67x</th><td>170112</td><td>94181</td><td>264293</td><td>264.293</td><th>2.18x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>1544</td><th>1.85x</th><td>98739</td><td>175849</td><td>274588</td><td>274.588</td><th>2.26x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>275</td><th>4.74x</th><td>18268</td><td>49453</td><td>67721</td><td>67.721</td><th>7.03x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>95</td><th>1.64x</th><td>27971</td><td>61290</td><td>89261</td><td>89.261</td><th>9.26x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>329</td><th>5.67x</th><td>48508</td><td>42073</td><td>90581</td><td>90.581</td><th>9.40x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>110</td><th>1.90x</th><td>18683</td><td>45296</td><td>63979</td><td>63.979</td><th>6.64x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>58</td><th>1x</th><td>3816</td><td>5822</td><td>9638</td><td>9.638</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>87</td><th>1.5x</th><td>10250</td><td>4337</td><td>14587</td><td>14.587</td><th>1.51x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>89</td><th>1.53x</th><td>6357</td><td>7538</td><td>13895</td><td>13.895</td><th>1.44x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>482</td><th>3.74x</th><td>27893</td><td>88846</td><td>116739</td><td>116.739</td><th>6.68x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>256</td><th>1.98x</th><td>49068</td><td>120553</td><td>169621</td><td>169.621</td><th>9.71x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>635</td><th>4.92x</th><td>77601</td><td>73984</td><td>151585</td><td>151.585</td><th>8.68x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>271</td><th>2.10x</th><td>32835</td><td>73873</td><td>106708</td><td>106.708</td><th>6.11x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>129</td><th>1x</th><td>8412</td><td>9054</td><td>17466</td><td>17.466</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>202</td><th>1.57x</th><td>20054</td><td>12983</td><td>33037</td><td>33.037</td><th>1.89x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>222</td><th>1.72x</th><td>19489</td><td>21590</td><td>41079</td><td>41.079</td><th>2.35x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>851</td><th>2.43x</th><td>41054</td><td>101144</td><td>142198</td><td>142.198</td><th>4.32x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>598</td><th>1.71x</th><td>72632</td><td>180720</td><td>253352</td><td>253.352</td><th>7.69x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1092</td><th>3.12x</th><td>139824</td><td>144360</td><td>284184</td><td>284.184</td><th>8.63x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>607</td><th>1.73x</th><td>64403</td><td>177431</td><td>241834</td><td>241.834</td><th>7.34x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>350</td><th>1x</th><td>17083</td><td>15848</td><td>32931</td><td>32.931</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>495</td><th>1.41x</th><td>36682</td><td>27204</td><td>63886</td><td>63.886</td><th>1.94x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>555</td><th>1.59x</th><td>27477</td><td>54815</td><td>82292</td><td>82.292</td><th>2.50x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>233</td><th>12.94x</th><td>19123</td><td>51937</td><td>71060</td><td>71.06</td><th>9.59x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>2.11x</th><td>30428</td><td>57085</td><td>87513</td><td>87.513</td><th>11.81x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>234</td><th>13x</th><td>33808</td><td>38005</td><td>71813</td><td>71.813</td><th>9.69x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>53</td><th>2.94x</th><td>14096</td><td>34364</td><td>48460</td><td>48.46</td><th>6.54x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>18</td><th>1x</th><td>3893</td><td>3516</td><td>7409</td><td>7.409</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>43</td><th>2.39x</th><td>10604</td><td>3348</td><td>13952</td><td>13.952</td><th>1.88x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>34</td><th>1.89x</th><td>3110</td><td>4528</td><td>7638</td><td>7.638</td><th>1.03x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>282</td><th>0x</th><td>22826</td><td>59563</td><td>82389</td><td>82.389</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>74</td><th>0x</th><td>36128</td><td>72629</td><td>108757</td><td>108.757</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>315</td><th>0x</th><td>53435</td><td>56360</td><td>109795</td><td>109.795</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>94</td><th>0x</th><td>30745</td><td>71840</td><td>102585</td><td>102.585</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>21</td><th>0x</th><td>5478</td><td>-1</td><td>5477</td><td>5.477</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>76</td><th>0x</th><td>34097</td><td>8338</td><td>42435</td><td>42.435</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>53</td><th>0x</th><td>4580</td><td>-1</td><td>4579</td><td>4.579</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>615</td><th>5.69x</th><td>42460</td><td>92491</td><td>134951</td><td>134.951</td><th>6.81x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>366</td><th>3.39x</th><td>73887</td><td>160717</td><td>234604</td><td>234.604</td><th>11.85x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>758</td><th>7.02x</th><td>114608</td><td>79979</td><td>194587</td><td>194.587</td><th>9.83x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>366</td><th>3.39x</th><td>65117</td><td>161995</td><td>227112</td><td>227.112</td><th>11.47x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>108</td><th>1x</th><td>8395</td><td>11410</td><td>19805</td><td>19.805</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>253</td><th>2.34x</th><td>33861</td><td>21941</td><td>55802</td><td>55.802</td><th>2.82x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>301</td><th>2.79x</th><td>12846</td><td>43687</td><td>56533</td><td>56.533</td><th>2.85x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>452</td><th>0x</th><td>29123</td><td>80831</td><td>109954</td><td>109.954</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>187</td><th>0x</th><td>47026</td><td>108417</td><td>155443</td><td>155.443</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>508</td><th>0x</th><td>63143</td><td>64473</td><td>127616</td><td>127.616</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>189</td><th>0x</th><td>32576</td><td>102782</td><td>135358</td><td>135.358</td><th>0x</th></tr><tr class=''><th class='c1'>ProtoBuf.net</th><td>40</td><th>0x</th><td>4958</td><td>1553</td><td>6511</td><td>6.511</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>163</td><th>0x</th><td>20299</td><td>12670</td><td>32969</td><td>32.969</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>133</td><th>0x</th><td>8177</td><td>-1</td><td>8176</td><td>8.176</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>209</td><th>19x</th><td>21708</td><td>43762</td><td>65470</td><td>65.47</td><th>15.25x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>3.45x</th><td>29677</td><td>57712</td><td>87389</td><td>87.389</td><th>20.36x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>223</td><th>20.27x</th><td>36434</td><td>37390</td><td>73824</td><td>73.824</td><th>17.20x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>38</td><th>3.45x</th><td>13700</td><td>33504</td><td>47204</td><td>47.204</td><th>11.00x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>11</td><th>1x</th><td>2715</td><td>1577</td><td>4292</td><td>4.292</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>32</td><th>2.91x</th><td>11484</td><td>2837</td><td>14321</td><td>14.321</td><th>3.34x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>34</td><th>3.09x</th><td>4948</td><td>4711</td><td>9659</td><td>9.659</td><th>2.25x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>235</td><th>6.91x</th><td>20574</td><td>47646</td><td>68220</td><td>68.22</td><th>10.16x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>64</td><th>1.88x</th><td>27624</td><td>60984</td><td>88608</td><td>88.608</td><th>13.19x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>269</td><th>7.91x</th><td>39021</td><td>39833</td><td>78854</td><td>78.854</td><th>11.74x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>64</td><th>1.88x</th><td>12937</td><td>36833</td><td>49770</td><td>49.77</td><th>7.41x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>34</td><th>1x</th><td>3394</td><td>3323</td><td>6717</td><td>6.717</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>54</td><th>1.59x</th><td>11397</td><td>3513</td><td>14910</td><td>14.91</td><th>2.22x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>58</td><th>1.71x</th><td>3654</td><td>6320</td><td>9974</td><td>9.974</td><th>1.48x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>497</td><th>4.56x</th><td>32724</td><td>89681</td><td>122405</td><td>122.405</td><th>7.29x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>255</td><th>2.34x</th><td>43140</td><td>102382</td><td>145522</td><td>145.522</td><th>8.67x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>611</td><th>5.61x</th><td>68462</td><td>69049</td><td>137511</td><td>137.511</td><th>8.19x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>255</td><th>2.34x</th><td>28785</td><td>78446</td><td>107231</td><td>107.231</td><th>6.39x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>109</td><th>1x</th><td>8764</td><td>8027</td><td>16791</td><td>16.791</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>180</td><th>1.65x</th><td>18781</td><td>14431</td><td>33212</td><td>33.212</td><th>1.98x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>196</td><th>1.80x</th><td>17305</td><td>23537</td><td>40842</td><td>40.842</td><th>2.43x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 1000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>248</td><th>13.05x</th><td>19064</td><td>45369</td><td>64433</td><td>64.433</td><th>10.22x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>61</td><th>3.21x</th><td>30285</td><td>61342</td><td>91627</td><td>91.627</td><th>14.54x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>268</td><th>14.11x</th><td>38377</td><td>42087</td><td>80464</td><td>80.464</td><th>12.77x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>61</td><th>3.21x</th><td>12442</td><td>37067</td><td>49509</td><td>49.509</td><th>7.85x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>19</td><th>1x</th><td>3394</td><td>2909</td><td>6303</td><td>6.303</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>51</td><th>2.68x</th><td>16999</td><td>3587</td><td>20586</td><td>20.586</td><th>3.27x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>55</td><th>2.89x</th><td>3553</td><td>9123</td><td>12676</td><td>12.676</td><th>2.01x</th></tr>
</tbody>
</table>
</body>
</html>

